#include <iostream>
using namespace std;
typedef long long ll;
ll cntDigit2(ll num)
{
    if (num <= 0)
        return 0;
    ll divider = 1;
    ll cnt = 0;
    while (divider <= num)
    {
        ll next_divider = divider * 10;
        ll low = num % divider;
        ll cur_digit = (num / divider) % 10;
        ll high = num / next_divider;

        cnt += high * divider;
        if(cur_digit > 2){
            cnt += divider;
        }
        else if(cur_digit == 2){
            cnt += low + 1;
        }
        divider = next_divider;
    }
    return cnt;
}

ll cntRange2(ll l, ll r)
{
    return cntDigit2(r) - cntDigit2(l - 1);
}

int main()
{
    ll L, R;
    cin >> L >> R;
    cout << cntRange2(L, R);
    return 0;
}




// #include <iostream>
// using namespace std;

// // 计算从0到n的数字中，数字2出现的次数
// long long countDigitTwo(long long n) {
//     if (n < 0) return 0;
//     long long count = 0;
//     long long divider = 1; // 表示当前处理的位数（1表示个位，10表示十位等）
//     while (divider <= n) {
//         long long next_divider = divider * 10;
//         // 计算高位部分、当前位和低位部分
//         long long high = n / next_divider;
//         int current = (n / divider) % 10;
//         long long low = n % divider;

//         // 根据当前位的值累加贡献
//         count += high * divider;
//         if (current > 2) {
//             count += divider;
//         } else if (current == 2) {
//             count += low + 1;
//         }
//         divider = next_divider;
//     }
//     return count;
// }

// // 计算[L, R]中数字2的总出现次数
// long long countDigitTwoInRange(int L, int R) {
//     return countDigitTwo(R) - countDigitTwo(L - 1);
// }

// int main() {
//     int L, R;
//     cin >> L >> R;
//     cout << countDigitTwoInRange(L, R) << endl; // 输出6
//     return 0;
// }